package com.hos.operation.push.vivo;


import com.hos.utile.DLog;
import com.vivo.push.sdk.notofication.Message;
import com.vivo.push.sdk.notofication.Result;
import com.vivo.push.sdk.server.Sender;

import java.security.SecureRandom;

/**
 * 仅测试vivo官推
 * Created by Administrator on 2020/10/26 0026.
 */
class VivoPush {
    //https://dev.vivo.com.cn/documentCenter/doc/362
    public static void main(String[] args) throws Exception {
        try {
            new VivoPush().dyPush(false);
        } catch (Exception e) {
            DLog.e(e.getMessage());
        }
    }

    //大医推送
    private void dyPush(boolean isDoc) throws Exception {
        if (isDoc) {
            DLog.e("医生端推送");
        } else {
            DLog.e("患者端推送");
        }
        VivoBaseBean vivoBean = null;
        //vivoBean= new DataDyBean();
        vivoBean = new DataZeBean();
        Object[] config = vivoBean.getConfig(isDoc);
        //注册登录开发平台网站获取到的appSecret
        Sender sender = new Sender((String) config[2]);
        //注册登录开发平台网站获取到的appId和appKey
        Result result = sender.getToken((int) config[0], (String) config[1]);
        sender.setAuthToken(result.getAuthToken());
        TestBean bean = new TestBean();
        Message singleMessage = new Message.Builder()
                //消息类型 0：运营类消息，1：系统类消息
                .classification(1)
                //该测试手机设备订阅推送所得的regid，且已添加为测试设备
                .regId(vivoBean.getRegId(isDoc))
                //必填项，设置通知类型，value类型支持以下值：
                //1：无
                //2：响铃
                //3：振动
                //4：响铃和振动
                .notifyType(3)
                .title(titile)
                .content(bean.alertBody)
                //可选项, 消息的生命周期, 若用户离线, 设置消息在服务器保存的时间, 单位: 秒
                //默认时间：1天re
                //最长时间：7天
                //最少时间：单推，60秒
                //其它，900秒
                .timeToLive(1000)
                //必填项，设置点击跳转类型，value类型支持以下值：
                //1：打开APP首页
                //2：打开链接
                //3：自定义
                //4：打开app内指定页面必填项，设置点击跳转类型，value类型支持以下值：
                .skipType(2)
                //可选项，跳转内容
                //跳转类型为2时，跳转内容最大1000个字符，
                //跳转类型为3或4时，跳转内容最大1024个字符
                .skipContent("http://www.vivo.com")
                //可选项，发送推送使用的网络方式，value支持以下值：
                // -1：方式不限
                // 1：仅在wifi下发送
                //不填默认为-1
                .networkType(-1)
                //必填项，用户请求唯一标识 最大64字符
                .requestId("1234567890123456")
                //推送模式 0：正式推送；1：测试推送，
                // 不填默认为0（测试推送，只能给web界面录入的测试用户推送；
                // 审核中应用，只能用测试推送）
                .pushMode(0)
                .build();

        Result resultMessage = sender.sendSingle(singleMessage);
        DLog.e(resultMessage);

    }


    private String index = getRandom();
    private String titile = "你好vivo" + index;

    class TestBean {
        public String alertBody = "推送内容" + index;
    }

    //获取随机码
    private String getRandom() {
        SecureRandom random = new SecureRandom();
        String randoms = "";
        for (int i = 0; i < 4; i++) {
            int randomInt = random.nextInt(9);
            randoms += randomInt;
        }
        return randoms;
    }
}
